<?php

namespace App\Containers\AppSection\Ban\Models;

use App\Containers\AppSection\Profile\Models\Profile;
use App\Containers\AppSection\User\Models\User;
use App\Ship\Parents\Models\Model;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

/**
 * Бан
 *
 * @property int $id Id
 * @property int $banned_by_id Кем заблокирован
 * @property string $ban_comment Коммент
 * @property string $unban_comment Коммент
 * @property int $user_id Id пользователя
 * @property int $profile_id Id профиля
 * @property Carbon $banned_at Когда заблокирован
 * @property Carbon $unbanned_at Когда разблокирован
 *
 * @property Profile $bannedBy Кем заблокирован
 * @property User $user Пользователь
 * @property Profile $profile Профиль
 */
class Ban extends Model
{
    public $timestamps = false;
    protected $table = 'bans';
    protected $fillable = [
        'banned_by_id',
        'ban_comment',
        'unban_comment',
        'user_id',
        'profile_id',
        'banned_at',
        'unbanned_at',
    ];

    protected $dates = [
        'banned_at',
        'unbanned_at',
    ];

    /**
     * A resource key to be used in the serialized responses.
     */
    protected string $resourceKey = 'Ban';

    /**
     * Кем заблокирован
     * @return BelongsTo Profile
     */
    public function bannedBy(): BelongsTo
    {
        return $this->belongsTo(Profile::class, 'banned_by_id', 'id');
    }

    /**
     * Пользователь
     * @return BelongsTo User
     */
    public function user(): BelongsTo
    {
        return $this->belongsTo(User::class, 'user_id', 'id')->withTrashed();
    }

    /**
     * Профиль
     * @return BelongsTo Profile
     */
    public function profile(): BelongsTo
    {
        return $this->belongsTo(Profile::class, 'profile_id', 'id');
    }
}
